<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SimpleInjector.Integration.Wcf</name>
    </assembly>
    <members>
        <member name="T:SimpleInjector.Integration.Wcf.WcfOperationLifestyle">
            <summary>
            Defines a lifestyle that caches instances for the lifetime of a WCF service class. WCF allows service
            classes to be (both implicitly and explicitly) configured to have a lifetime of <b>PerCall</b>, 
            <b>PerSession</b> or <b>Single</b> using the <see cref="T:System.ServiceModel.InstanceContextMode"/> enumeration. The
            lifetime of WCF service classes is controlled by WCF and this lifestyle allows registrations to be
            scoped according to the containing WCF service class.
            </summary>
            <example>
            The following example shows the usage of the <b>WcfOperationLifestyle</b> class:
            <code lang="cs"><![CDATA[
            var container = new Container();
            
            container.Register<IUnitOfWork, EntityFrameworkUnitOfWork>(new WcfOperationLifestyle());
            ]]></code>
            </example>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.WcfOperationLifestyle.#ctor">
            <summary>Initializes a new instance of the <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationLifestyle"/> class. The instance
            will ensure that created and cached instance will be disposed after the execution of the web
            request ended and when the created object implements <see cref="T:System.IDisposable"/>.</summary>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.WcfOperationLifestyle.#ctor(System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationLifestyle"/> class.</summary>
            <param name="disposeInstanceWhenOperationEnds">
            Specifies whether the created and cached instance will be disposed after the execution of the WCF
            operation ended and when the created object implements <see cref="T:System.IDisposable"/>. 
            </param>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.WcfOperationLifestyle.WhenWcfOperationEnds(SimpleInjector.Container,System.Action)">
            <summary>
            Allows registering an <paramref name="action"/> delegate that will be called when the current
            WCF operation ends, but before the scope disposes any instances.
            </summary>
            <param name="container">The <see cref="T:SimpleInjector.Container"/> instance.</param>
            <param name="action">The delegate to run when the WCF operation ends.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the arguments is a null reference
            (Nothing in VB).</exception>
            <exception cref="T:System.InvalidOperationException">Will be thrown when there is currently no active
            WCF operation in the supplied <paramref name="container"/> instance.</exception>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.WcfOperationLifestyle.GetCurrentScopeCore(SimpleInjector.Container)">
            <summary>
            Returns the current <see cref="T:SimpleInjector.Scope"/> for this lifestyle and the given 
            <paramref name="container"/>, or null when this method is executed outside the context of a scope.
            </summary>
            <param name="container">The container instance that is related to the scope to return.</param>
            <returns>A <see cref="T:SimpleInjector.Scope"/> instance or null when there is no scope active in this context.</returns>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.WcfOperationLifestyle.CreateCurrentScopeProvider(SimpleInjector.Container)">
            <summary>
            Creates a delegate that that upon invocation return the current <see cref="T:SimpleInjector.Scope"/> for this
            lifestyle and the given <paramref name="container"/>, or null when the delegate is executed outside
            the context of such scope.
            </summary>
            <param name="container">The container for which the delegate gets created.</param>
            <returns>A <see cref="T:System.Func`1"/> delegate. This method never returns null.</returns>
        </member>
        <member name="P:SimpleInjector.Integration.Wcf.WcfOperationLifestyle.Length">
            <summary>Gets the length of the lifestyle.</summary>
            <value>The length of the lifestyle.</value>
        </member>
        <member name="T:SimpleInjector.Integration.Wcf.WcfOperationScope">
            <summary>
            Thread and container specific cache for services that are registered with one of the 
            <see cref="T:SimpleInjector.SimpleInjectorWcfExtensions">RegisterPerWcfOperation</see> extension method overloads.
            This class is created implicitly and a current instance can be requested by calling
            <see cref="M:SimpleInjector.SimpleInjectorWcfExtensions.GetCurrentWcfOperationScope(SimpleInjector.Container)">GetCurrentWcfOperationScope</see>.
            </summary>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.WcfOperationScope.Dispose(System.Boolean)">
            <summary>Releases all instances that are cached by the <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationScope"/> object.</summary>
            <param name="disposing">False when only unmanaged resources should be released.</param>
        </member>
        <member name="T:SimpleInjector.SimpleInjectorWcfExtensions">
            <summary>
            Extension methods for integrating Simple Injector with WCF services.
            </summary>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.RegisterWcfServices(SimpleInjector.Container,System.Reflection.Assembly[])">
            <summary>
            Registers the WCF services instances (public classes that implement an interface that
            is decorated with a <see cref="T:System.ServiceModel.ServiceContractAttribute"/>) that are 
            declared as public non-abstract in the supplied set of <paramref name="assemblies"/>.
            </summary>
            <param name="container">The container the services should be registered in.</param>
            <param name="assemblies">The assemblies to search.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="container"/> is 
            a null reference (Nothing in VB).</exception>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.EnablePerWcfOperationLifestyle(SimpleInjector.Container)">
            <summary>
            Allows the container to resolve instances with a Per Wcf Operation lifestyle for the given 
            <paramref name="container"/>. This is 
            enabled automatically when services get registered using one of the <b>RegisterPerWcfRequest</b>
            overloads or when the container passed onto the 
            <see cref="M:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory.SetContainer(SimpleInjector.Container)"/> method. 
            </summary>
            <param name="container">The container.</param>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.RegisterPerWcfOperation``1(SimpleInjector.Container)">
            <summary>
            Registers that a single instance of <typeparamref name="TConcrete"/> will be returned during
            the WCF configured lifetime of the WCF service class. When the WCF service class is released by
            WCF and <typeparamref name="TConcrete"/> implements <see cref="T:System.IDisposable"/>,
            the cached instance will be disposed as well.
            </summary>
            <typeparam name="TConcrete">The concrete type that will be registered.</typeparam>
            <param name="container">The container to make the registrations in.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when the <paramref name="container"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown when this container instance is locked and can not be altered, or when an 
            the <typeparamref name="TConcrete"/> has already been registered.
            </exception>
            <exception cref="T:System.ArgumentException">Thrown when the <typeparamref name="TConcrete"/> is a type
            that can not be created by the container.</exception>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.RegisterPerWcfOperation``2(SimpleInjector.Container)">
            <summary>
            Registers that a single instance of <typeparamref name="TImplementation"/> will be returned during
            the WCF configured lifetime of the WCF service class. When the WCF service class is released by
            WCF and <typeparamref name="TImplementation"/> implements <see cref="T:System.IDisposable"/>, the cached 
            instance will be disposed as well.
            </summary>
            <typeparam name="TService">The interface or base type that can be used to retrieve the instances.</typeparam>
            <typeparam name="TImplementation">The concrete type that will be registered.</typeparam>
            <param name="container">The container to make the registrations in.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when the <paramref name="container"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown when this container instance is locked and can not be altered, or when an 
            the <typeparamref name="TService"/> has already been registered.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the given <typeparamref name="TImplementation"/> 
            type is not a type that can be created by the container.
            </exception>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.RegisterPerWcfOperation``1(SimpleInjector.Container,System.Func{``0})">
            <summary>
            Registers the specified delegate that allows returning instances of <typeparamref name="TService"/>,
            and returned instances are cached during the WCF configured lifetime of the WCF service class.
            When the WCF service class is released by WCF and the cached instance implements 
            <see cref="T:System.IDisposable"/>, that cached instance will be disposed as well.
            </summary>
            <typeparam name="TService">The interface or base type that can be used to retrieve instances.</typeparam>
            <param name="container">The container to make the registrations in.</param>
            <param name="instanceCreator">The delegate that allows building or creating new instances.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either the <paramref name="container"/>, or <paramref name="instanceCreator"/> are
            null references.</exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown when this container instance is locked and can not be altered, or when the
            <typeparamref name="TService"/> has already been registered.</exception>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.RegisterPerWcfOperation``1(SimpleInjector.Container,System.Func{``0},System.Boolean)">
            <summary>
            Registers the specified delegate that allows returning instances of <typeparamref name="TService"/>,
            and returned instances are cached during the WCF configured lifetime of the WCF service class.
            When the WCF service class is released by WCF, <paramref name="disposeWhenRequestEnds"/> is set to
            <b>true</b>, and the cached instance implements <see cref="T:System.IDisposable"/>, that cached instance 
            will be disposed as well.
            </summary>
            <typeparam name="TService">The interface or base type that can be used to retrieve instances.</typeparam>
            <param name="container">The container to make the registrations in.</param>
            <param name="instanceCreator">The delegate that allows building or creating new instances.</param>
            <param name="disposeWhenRequestEnds">If set to <c>true</c> the cached instance will be
            disposed at the end of its lifetime.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either the <paramref name="container"/>, or <paramref name="instanceCreator"/> are
            null references.</exception>
            <exception cref="T:System.InvalidOperationException">
            Thrown when this container instance is locked and can not be altered, or when the
            <typeparamref name="TService"/> has already been registered.</exception>
        </member>
        <member name="M:SimpleInjector.SimpleInjectorWcfExtensions.GetCurrentWcfOperationScope(SimpleInjector.Container)">
            <summary>
            Gets the <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationScope"/> for the current WCF request or <b>null</b> when no
            <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationScope"/> is currently in scope.
            </summary>
            <example>
            The following example registers a <b>ServiceImpl</b> type as transient (a new instance will be
            returned every time) and registers an initializer for that type that will register that instance
            for disposal in the <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationScope"/> in which context it is created:
            <code lang="cs"><![CDATA[
            container.Register<IService, ServiceImpl>();
            container.RegisterInitializer<ServiceImpl>(instance =>
            {
                container.GetCurrentWcfOperationScope().RegisterForDisposal(instance);
            });
            ]]></code>
            </example>
            <param name="container">The container.</param>
            <returns>A new <see cref="T:SimpleInjector.Integration.Wcf.WcfOperationScope"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown when the <paramref name="container"/> is a null reference.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when the current <paramref name="container"/>
            has both no <b>LifetimeScope</b> registrations <i>and</i> <see cref="M:SimpleInjector.SimpleInjectorWcfExtensions.EnablePerWcfOperationLifestyle(SimpleInjector.Container)"/> is
            not called. Lifetime scoping must be enabled by calling <see cref="M:SimpleInjector.SimpleInjectorWcfExtensions.EnablePerWcfOperationLifestyle(SimpleInjector.Container)"/> or
            by registering a service using one of the 
            <see cref="M:SimpleInjector.SimpleInjectorWcfExtensions.RegisterPerWcfOperation``2(SimpleInjector.Container)">RegisterPerWcfRequest</see>
            overloads.
            </exception>
        </member>
        <member name="T:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost">
            <summary>
            This service host is used to set up the service behavior that replaces the instance provider to use 
            dependency injection.
            </summary>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost.#ctor(SimpleInjector.Container,System.Type,System.Uri[])">
            <summary>
            Initializes a new instance of the <see cref="T:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost"/> class.
            </summary>
            <param name="container">The container.</param>
            <param name="serviceType">Type of the service.</param>
            <param name="baseAddresses">The base addresses.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="container"/> is a null
            reference or <paramref name="serviceType"/> is a null reference.</exception>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost.OnOpening">
            <summary>Opens the channel dispatchers.</summary>
        </member>
        <member name="T:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory">
            <summary>
            Factory that provides instances of <see cref="T:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost"/> in managed hosting 
            environments where the host instance is created dynamically in response to incoming messages.
            </summary>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory.SetContainer(SimpleInjector.Container)">
            <summary>Sets the container.</summary>
            <param name="container">The container.</param>
        </member>
        <member name="M:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory.CreateServiceHost(System.Type,System.Uri[])">
            <summary>
            Creates a <see cref="T:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost"/> for a specified type of service with a specific 
            base address. 
            </summary>
            <returns>
            A <see cref="T:SimpleInjector.Integration.Wcf.SimpleInjectorServiceHost"/> for the type of service specified with a specific base 
            address.
            </returns>
            <param name="serviceType">
            Specifies the type of service to host. 
            </param>
            <param name="baseAddresses">
            The <see cref="T:System.Array"/> of type <see cref="T:System.Uri"/> that contains the base 
            addresses for the service hosted.
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="serviceType"/> is a null 
            reference.</exception>
        </member>
    </members>
</doc>
